草庐IT

Android AsyncTask 内存泄漏

全部标签

c# - 如何获取 C# 中的总物理内存?

我正在使用GlobalMemoryStatusEx函数来检索有关内存的信息,但该函数无法正常工作。它为所有属性返回0。我认为此功能不适用于我的Windows7环境。[StructLayout(LayoutKind.Sequential)]internalstructMEMORYSTATUSEX{internaluintdwLength;internaluintdwMemoryLoad;internalulongullTotalPhys;internalulongullAvailPhys;internalulongullTotalPageFile;internalulongullAvai

c# - 是否有像文件流一样阻塞的内存流

我使用的库要求我提供一个实现此接口(interface)的对象:publicinterfaceIConsole{TextWriterStandardInput{get;}TextReaderStandardOutput{get;}TextReaderStandardError{get;}}对象的读者然后被库使用:IConsoleconsole=newMyConsole();intreadBytes=console.StandardOutput.Read(buffer,0,buffer.Length);通常,实现IConsole的类具有来自外部进程的StandardOutput流。在这种

c# - this.Dispose() 在关闭后不会释放 Form 使用的内存。

我有一个Windows窗体应用程序,在该应用程序中单击某些按钮可以从第二窗体创建对象。在用户关闭此第二个表单时,此表单使用的内存不会被释放(根据任务管理器)。我尝试在退出按钮上使用this.dispose(),在主代码中使用this.close(),form2=null,并尝试在处理之前通过代码清除此表单中的所有控件。这些都不起作用,每次用户单击按钮时,应用程序的内存使用量都会增加,并且不会释放前一个实例使用的内存。我应该用什么来解决这个问题? 最佳答案 调用Dispose不会清除对象使用的内存。Dispose旨在用于运行用户定义的

c# - 如何在非托管内存中实例化 C# 类? (可能的?)

更新:现在有一个“有效”的公认答案。您永远、永远、永远、永远都不应该使用它。曾经。首先让我声明我是一名游戏开发者,以此作为我的问题的序言。有一个合法的-如果非常不寻常-与性能相关的原因想要这样做。假设我有一个这样的C#类:classFoo{publicinta,b,c;publicvoidMyMethod(intd){a=d;b=d;c=a+b;}}没什么好看的。请注意,它是一种仅包含值类型的引用类型。在托管代码中我想要这样的东西:Foofoo;foo=Voodoo.NewInUnmanagedMemory();//NewInUnmanagedMemory函数会是什么样子?如果不能在C

c# - ListCollectionView 是否泄漏内存?

我一直在研究如何避免因View模型中对INotifyCollectionChanged事件的强引用而导致的内存泄漏。我正在尝试使用ListCollectionView看看它是否适合我。我认为以下是内存泄漏,我做错了吗?varstuff=newObservableCollection();while(true){varresult=newListCollectionView(stuff);//JusttokeepmakesurethatthememoryI'mseeing//isn'twaitingtobeGC'dGC.Collect();} 最佳答案

c# - StringBuilder 是否比 String 连接使用更多的内存?

我知道在C#中使用StringBuilder有明显的性能优势,但内存差异是什么?StringBuilder是否使用更多内存?附带说明一下,stringbuilder本质上有哪些不同之处使其速度如此之快? 最佳答案 简短回答:StringBuilder适用于连接任意数量的字符串的情况,而这些字符串在编译时是未知的。如果您确实知道在编译时要组合哪些字符串,StringBuilder基本上毫无意义,因为您不需要它的动态调整大小功能。示例1:您想组合“猫”、“狗”和“老鼠”。这正好是11个字符。您可以简单地分配一个长度为11的char[]数

c# - 从内存中的 .CAB 存档或 InfoPath XSN 文件中提取的最少 C# 代码

最近我一直在尝试实现一些从InfoPathXSN文件(.CAB存档)中提取文件的功能。在互联网上广泛搜索后,似乎没有用于此的native.NETAPI。当前所有解决方案都以大型库为中心,即包含Cabinet.dll的托管C++。遗憾的是,所有这些都违反了我公司的“无第三方库”政策。从2.0开始,.NET获得了一个名为UnmanagedFunctionPointer的属性,它允许使用__cdecl进行源级回调声明。在此之前,__stdcall是镇上唯一的节目,除非你不介意捏造IL,这种做法在这里也是非法的。我立即知道这将允许为Cabinet.dll实现一个相当小的C#包装器,但我在任何地

c# - 我可以获得内存映射文件的路径吗? (.NET 4.0)

我希望非.NET应用程序访问内存映射文件,但此应用程序不知道内存映射文件的存在,因此我需要文件路径。有可能的? 最佳答案 他们有一些samplehere.编辑我认为this会提供答案。基本上,内存映射文件似乎需要某种内存指针,而不是文件系统路径。 关于c#-我可以获得内存映射文件的路径吗?(.NET4.0),我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1114786/

c# - 如何在不先将整个列表加载到内存的情况下使用 Linq to Sql 实现 SkipWhile?

我需要按发布日期降序排列存储在数据库中的文章,然后使用Id==100获取文章之后的前20条记录。这就是我想用Linq做的事情:IQueryablearticles=db.Articles.OrderByDescending(a=>a.PublicationDate).SkipWhile(a=>a.Id!=100).Take(20);但是,这会生成NotSupportedException,因为LinqtoSql不支持SkipWhile(请参阅here)。一个可能的解决方案是执行查询,然后使用LinqtoObject应用SkipWhile:IEnumerablearticles=db.A

c# - 极端内存条件测试 : How to saturate RAM?

我想写一小段程序来启动线程,以线性方式消耗可用的RAM内存,直到达到一定水平,然后停止(理想情况下,暂停直到“足够”的内存被释放,然后继续创建线程,依此类推。)我尝试了以下操作,但是list.Add(newbyte[])需要连续的RAM空间并抛出一个OutOfMemoryException,这不是我想要的模拟。编辑:我有一个多线程的内存消耗型应用程序,它占用了一大堆RAMGB。我想要的只是在“实验室条件”中隔离/重现这种情况以解决它,即编写自适应内存监控/线程限制器草案。我正在使用x64操作系统和x64平台。说清楚:我想看到的结果是任务管理器内存监视器由于程序而直线上升。staticv